<!DOCTYPE html>
<html lang="en">
	<head>
		<title>Tween.js / hello world!</title>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<link href="css/style.css" media="screen" rel="stylesheet" type="text/css" />
	</head>
	<body>
		<div id="info">
			<h1><a href="http://github.com/tweenjs/tween.js">tween.js</a></h1>
			<h2>00 _ hello world</h2>
			<p>Simple example for illustrating the creation and chaining of tweens.</p>
		</div>
		<div
			id="target"
			style="
				position: absolute;
				top: 100px;
				left: 100px;
				width: 100px;
				height: 100px;
				background: #a0dde9;
				padding: 1em;
			"
		>
			hello world!
		</div>

		<script src="../dist/tween.umd.js"></script>
		<script src="js/RequestAnimationFrame.js"></script>
		<script>
			var position
			var target
			var tween, tweenBack

			init()
			animate()

			function init() {
				position = {x: 100, y: 100, rotation: 0}
				target = document.getElementById('target')
				tween = new TWEEN.Tween(position)
					.to({x: 700, y: 200, rotation: 359}, 2000)
					.delay(1000)
					.easing(TWEEN.Easing.Elastic.InOut)
					.onUpdate(update)

				tweenBack = new TWEEN.Tween(position)
					.to({x: 100, y: 100, rotation: 0}, 3000)
					.easing(TWEEN.Easing.Elastic.InOut)
					.onUpdate(update)

				tween.chain(tweenBack)
				tweenBack.chain(tween)

				tween.start()
			}

			//If we register the callback animate, but the TWEEN.update(time) returns false,
			//cancel/unregister the handler
			function animate(time) {
				var id = requestAnimationFrame(animate)

				var result = TWEEN.update(time)

				if (!result) cancelAnimationFrame(id)
			}

			function update() {
				target.style.left = position.x + 'px'
				target.style.top = position.y + 'px'
				target.style.webkitTransform = 'rotate(' + Math.floor(position.rotation) + 'deg)'
				target.style.MozTransform = 'rotate(' + Math.floor(position.rotation) + 'deg)'
			}
		</script>
	</body>
</html>
